package vip.xiaonuo.modular.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Author tuchaoren
 * @Date 2021-06-25
 **/
@Slf4j
public class ParamSortUtil {

    /**
     * 将对象根据字母顺序排序
     */
    public static <T> String sort(T t) {
        // 对象转换
        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(t));
        // 排序
        String str = jsonObject
                .entrySet()
                .stream()
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, TreeMap::new))
                .entrySet()
//                .values()
                .stream()
                .filter(Objects::nonNull)
                .map(String::valueOf)
                .reduce((a, b) -> a + b)
                .orElse("");
        log.info("排序后的字符串 -> {}", str);
        return str;
    }


}
